package com.rd.student.wulian.wanggaobo.day0731;

import java.util.Arrays;
import java.util.Random;

public class Note {
    public static void main(String[] args) {
        byte b1 = 1;
        byte b2 = 2;
        byte b3 = (byte) (b1 + b2);

        int i1 = 1;
        b1 += b2;
        //        b1 = b1 + b2;
        //        System.out.println(b1);
        // b1 + b2 = int
        // b1 = (byte)(b1 + b2)
        b1 += i1;
        //        System.out.println(b1);

        // 4字节 32位
        // 0000 0000 0000 0000 0000 0000
        int k = 0; // 1
        boolean flag = false;  // true
        // 1字节

        // 在内存中存储的是数字
        int i2 = 1;
        // '1' - '0'(48)
        char c1 = '1';
        // 'A' (65)
        // 'a' (97)
        // 可以帮助判断一个字符  是哪种类型
        Character.isDigit(c1);
        Character.isLetter(c1);

        // 转义字符
        char c2 = '\n';
        // windows中是 '\r\n'
        // linux 中就是 '\n'
        // 通过转义字符 让字符还原本身
        char c3 = '\\';


        String s1 = "1";
        // 字符和数值的区别
        // 字符  是非数值的符号


        int[] arr = new int[50];
        // 索引机制  arr[0] --- arr[49]

        // 创建变量时 考虑生命周期
        // 即使都是局部变量  也会因为位置不同 有较大区别
        Random random = new Random();
        for (int i = 0; i < arr.length; i++) {
            //            arr[i] = -1;
            //            arr[i] = i;
            arr[i] = random.nextInt(50);

            // 0.xx [0,1)
            //            arr[i] = (int)Math.random() * 50;
            //            System.out.println(arr[i]);
        }
        // 数组中最常用的方法之一
        // 自定义工具 Utils   ArrayUtils  StringUtils
        //        System.out.println(Arrays.toString(arr));

        // foreach 使用一个临时变量 来接收数组中的每个元素
        for (int i : arr) {
            //            System.out.println(i);
        }
        // foreach更多用来遍历集合  或者其他不需要关心索引的容器

        int[] arr1 = new int[3];
        // arr1存储的是地址
        // {0,0,0}
        int[] arr2 = arr1;
        int[] arr3 = new int[arr1.length];
        // 将此地址 赋值给了arr2
        // 它们操作相同的内存空间
        // {0,0,0}
        // 初始值 arr2[0] = 0;
        //        arr2[0] = 1;
        // {1,0,0}

        test(arr2);
        // {0,0,0}

        //        arr1[1] = 2;
        // A {0,0,0}   B {1,0,0}
        //        System.out.println(Arrays.toString(arr1));
        //        System.out.println(Arrays.toString(arr2));

        //        char[] cArr = new char[6];


        char[] cArr1 = {'a', 'c', 'd'};
        char[] cArr2 = {'g', 'h', 'j'};
        int length = cArr1.length + cArr2.length;
        char[] cArr3 = new char[length];
        System.out.println(Arrays.toString(cArr3));
        System.arraycopy(cArr1, 0, cArr3, 0, cArr1.length);
        System.out.println(Arrays.toString(cArr3));
        //        System.arraycopy(cArr2, 0, cArr3, 0, cArr2.length);
        //        System.arraycopy(cArr2, 0, cArr3,cArr1.length-1, cArr2.length);

        //        System.arraycopy(cArr2, 0, cArr3, cArr1.length + 1, cArr2.length);
        System.arraycopy(cArr2, 0, cArr3, cArr1.length, cArr2.length);
        //        System.out.println(Arrays.toString(cArr3));

        int[][] arr11 = new int[][]{{3, 8, 2}, {2, 7}, {9, 0, 1, 6}};
        printArr(arr11);

        Arrays.copyOf(arr1, 10);

        // Merge
    }

    // 实参传给形参
    // arr2 -> 0x1A
    // arr = arr2 -> 0x1A
    // 引用传递
    public static void test(int[] arr) {
        if (arr.length >= 1) {
            arr[0] = 1;
        }
    }

    public static int getMax(int[] arr) {
        // 给它一个最小值
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }

    public static void printArr(int[][] arr) {
        // int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};
        // int[][] arr = new int[][]{{3,8,2},{2,7,2},{9,0,1}};
        for (int i = 0; i < arr.length; i++) {
            int[] tmp = arr[i];
            for (int j = 0; j < tmp.length; j++) {
                System.out.println(tmp[j]);
                System.out.println(arr[i][j]);
            }
            System.out.println("-----");
        }
    }
}
